Introduction
Lors de leur parcours académique, les étudiants explorent la culture
générale, une vaste étendue de connaissances transcendant les
disciplines. Cette toile de fond intellectuelle enrichit leurs
perspectives, nourrit leur curiosité et contribue à leur développement
académique, formant ainsi des individus éclairés et dotés d’une vision
élargie du monde.
Présentation du sujet
Pour notre projet de fin de semestre nous allons tenter d’analyser
certaine caractéristique des étudiants de l’université de Tours
concernant leur culture générale dans ce cadre en fait référence à une
étude qui a été menée à l’automne 2023.Cette étude, basée sur un sondage
réalisé par Mme Scholler et nous, les étudiants de L3
d’Économie à l’université de
Tours, dans le cadre de nos cours de logiciel R3.
Notre étude se porte sur la culture générale des étudiants, par
conséquent nous allons tenter de répondre aux question suivante :
Quelle est la perception (niveau de confiance) des répondants
sur leur culture générale par genre?
A quel question les répondants ont le mieux répondu ?le moins
bien répondu?
Y a-t-il une corrélation entre le temps de travail personnel
et le niveau de culture générale ?
Existe-t-il des différences significatives en termes de
culture générale entre les filières d’études ?
Quel est le niveau de culture générale des étudiants
?
Comment la culture générale varie-t-elle en fonction du
niveau d’études ?
Existe-t-il des différences entre les genres en ce qui
concerne la culture générale ?
Présentation des données
Nous disposons de 40 question avec
208 de répondants,des étudiants de L1,L2 et L3 dont
l’âge est compris entre 16 et 31 ans,
dans la base donnée réalisée par Mme Scholler contenant
les réponses des étudiants de l’université de Tours.
Les questions abordent divers sujets dont la culture générale, mais nous
avons décidé de nous focaliser spécifiquement sur celles-ci. Voici un
exemple de questions qui nous ont été posées :
Quelle est la plus large chaîne de montagne du monde
?
Quel est le nom de la femme noire qui a refusé de céder sa
place à un homme blanc dans un bus en 1955 aux États-Unis
?
Au cours de quel siècle, Cléopâtre, a-t-elle régné
?
Quel naturaliste a révolutionné la biologie avec son ouvrage
“L’Origine des espèces” paru en 1859 ?
À quel mot correspond la définition suivante : répartition
dans le temps d’une charge financière correspondant au remplacement d’un
bien, machine, appareil, etc.?
Qui est Niki de Saint Phalle ?
Combien de temps dure la rotation complète de la Lune autour
de la Terre ?
En quelle année est définitivement proclamée l’abolition de
l’esclavage en France ?
Qui a inventé l’expression “la main invisible”
?
Quel écrivain et philosophe français a raconté l’histoire de
Candide ?
Avez-bien joué le jeu et répondu sans consulté de source
d’information ?
Vous pensez avoir combien de réponses juste sur les 10
questions ? (0 - 10)
Perception de la Culture Générale par Genre
Commentaire
Le diagramme illustre la moyenne et la médiane des évaluations de
culture générale en fonction du genre (féminin et masculin). Une
observation notable est que les hommes affichent généralement plus de
confiance que les femmes. En moyenne, les hommes estiment obtenir une
note de 6,26/10, tandis que les femmes estiment atteindre une moyenne de
5,47.
Le segment rouge représente la médiane, qui se situe à 6 pour les
deux groupes (féminin et masculin). Ainsi, bien que les deux sexes aient
une médiane égale, on peut constater que les femmes semblent avoir une
moyenne légèrement inférieure à celle des hommes.
conclusion les hommes semblent avoir une perception
de la culture générale plus élevée que les femmes.*
Analyse leTemps de Travail Personnel et le Niveau de Culture
Générale
commentaitre
Il semble que les données ne montrent pas de corrélation
significative entre le temps de travail personnel et le niveau de
culture générale chez les étudiants. Les points semblent être dispersés
dans l’espace, ce qui indique qu’il n’y a pas de tendance ou de relation
claire entre les deux variables.Il est également intéressant de
remarquer que le temps de travail personnel n’est pas directement lié au
niveau de la culture générale. Bien que la relation entre les deux
variables soit moins évidente, cela pourrait être dû au fait que les
bonnes réponses ne reflètent pas nécessairement le temps de travail
personnel des participants.
Test Pearson
##
## Pearson's product-moment correlation
##
## data: data_clean$travail_scolaire and data_clean$vrai_note
## t = 0.39714, df = 195, p-value = 0.6917
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1118116 0.1675582
## sample estimates:
## cor
## 0.02842844
Commentaire:
Le coefficient de corrélation observé entre le temps de travail
personnel et le niveau de culture générale est de 0.02842844, indiquant
une corrélation très faible, voire inexistante sur le plan linéaire. La
p-value associée à cette corrélation est de 0.6917, dépassant largement
le seuil de significativité conventionnel de 0.05. De plus, l’intervalle
de confiance à 95% pour le coefficient de corrélation varie de
-0.1118116 à 0.1675582. Ces résultats suggèrent qu’il n’y a pas de
relation significative entre le temps de travail personnel et le niveau
de culture générale dans notre échantillon.
Conclusion :
Les résultats du test de corrélation de Pearson suggèrent qu’il
n’y a pas de relation significative entre le temps de travail personnel
et le niveau de culture générale dans cet échantillon de
données.
Analyse des Différences de Niveau de Culture Générale

Commentaire
ce graphe fournit un aperçu des niveaux de culture générale dans
les différentes filières d’études et met en évidence les spécificités de
chaque filière en matière de culture générale.Cette information est
particulièrement utile pour les décideurs, car elle permet de mieux
comprendre les spécificités de chaque filière et d’adapter les
programmes et les ressources éducatives en conséquence.
Test de Kruskal-Wallis
##
## Kruskal-Wallis rank sum test
##
## data: vrai_note by filliere
## Kruskal-Wallis chi-squared = 1.3959, df = 2, p-value = 0.4976
Commentaire :
La valeur du test du chi-carré de Kruskal-Wallis est de 1.3959,
reflétant la mesure de la différence globale entre les groupes de
filières. La p-value associée à ce test est de 0.4976, dépassant le
seuil standard de significativité de 0.05. Ces résultats indiquent qu’il
n’y a pas de preuve statistiquement significative pour affirmer que les
variations observées dans les niveaux de culture générale entre les
filières sont autre chose que le fruit du hasard.
En résumé, les conclusions du test de Kruskal-Wallis suggèrent
qu’aucune différence significative n’est observée en termes de culture
générale entre les étudiants des diverses filières d’études dans cet
échantillon. Autrement dit, selon ces données, la filière d’études d’un
étudiant ne semble pas être un indicateur significatif de son niveau de
culture générale.
Évaluation du Niveau de Culture Générale des Étudiants
| |
Unique |
Missing Pct. |
Mean |
SD |
Min |
Median |
Max |
Histogram |
| note |
12 |
0 |
6.0 |
2.0 |
0.0 |
6.0 |
10.0 |
 |
| vrai_note |
10 |
0 |
6.6 |
1.8 |
1.0 |
7.0 |
10.0 |
 |
| surestimation |
12 |
0 |
0.6 |
1.8 |
-5.0 |
1.0 |
5.0 |
 |
| |
|
N |
% |
| cult1 |
l'Himalaya |
127 |
61.1 |
| |
la cordillère des Andes |
75 |
36.1 |
| |
le massif de l'Atlas |
5 |
2.4 |
| |
les Rocheuses |
1 |
0.5 |
| cult2 |
Angela Davis |
7 |
3.4 |
| |
Mae Jemison |
3 |
1.4 |
| |
Oprah Winfrey |
4 |
1.9 |
| |
Rosa Parks |
194 |
93.3 |
| cult3 |
1er siècle avant JC |
75 |
36.1 |
| |
3e siècle avant JC |
66 |
31.7 |
| |
5e siècle avant JC |
47 |
22.6 |
| |
7e siècle avant JC |
20 |
9.6 |
| cult4 |
Charles Darwin |
181 |
87.0 |
| |
Georges-Louis Leclerc de Buffon |
9 |
4.3 |
| |
Henry David Thoreau |
11 |
5.3 |
| |
Jean-Baptiste de Lamarck |
7 |
3.4 |
| cult5 |
amortissement |
145 |
69.7 |
| |
plue-value |
22 |
10.6 |
| |
provision |
11 |
5.3 |
| |
réévaluation d'actif |
30 |
14.4 |
| cult6 |
une actrice |
31 |
14.9 |
| |
une autrice |
51 |
24.5 |
| |
une couturière |
31 |
14.9 |
| |
une peintre |
95 |
45.7 |
| cult7 |
14 jours |
12 |
5.8 |
| |
21 jours |
33 |
15.9 |
| |
28 jours |
140 |
67.3 |
| |
7 jours |
23 |
11.1 |
| cult9 |
Adam Smith |
150 |
72.1 |
| |
John Maynard Keynes |
22 |
10.6 |
| |
Karl Marx |
25 |
12.0 |
| |
Paul Anthony Samuelson |
11 |
5.3 |
| cult10 |
Diderot |
29 |
13.9 |
| |
Molière |
13 |
6.2 |
| |
Rousseau |
16 |
7.7 |
| |
Voltaire |
150 |
72.1 |
Commentaire
L’analyse des données recueillies dans notre enquête fournit des
perspectives significatives sur le niveau de culture générale des
étudiants interrogés. La moyenne des notes obtenues atteint 6.0,
présentant une variabilité marquée illustrée par un écart-type de 2.0.
En ce qui concerne des questions spécifiques, 61.1% des répondants ont
correctement identifié l’Himalaya comme la plus vaste chaîne de
montagnes, tandis que 69.7% ont bien assimilé la notion d’amortissement
en finance. Des performances notables ont été enregistrées sur des
questions emblématiques, telles que l’identification de Rosa Parks
(93.3%), qui a refusé de céder sa place à un homme noir aux États-Unis
en 1955, les 28 jours représentant la durée de rotation de la Lune
(67.3%), et l’attribution de “la main invisible” à Adam Smith
(72.1%).
Conclusion
Les questions portant sur la femme noire qui a refusé de céder sa
place à un homme noir en 1955 aux États-Unis (cult2), sur le naturaliste
qui a révolutionné la biologie avec son ouvrage “L’Origine des espèces”
paru en 1859 (cult4) et sur la durée de rotation de la Lune (cult7) ont
généré des taux élevés de réponses correctes. En revanche, les questions
relatives à la plus vaste chaîne de montagnes (le massif de l’Atlas, Mae
Jemison et les Rocheuses) ont obtenu des taux de réponses plus faibles.
Les variations significatives dans les réponses soulignent la diversité
des connaissances des étudiants en culture générale, offrant ainsi un
aperçu détaillé de leurs performances sur chaque question
spécifique.
Culture général selon le niveau d’étude
Commentaire
Les différences culturelles varient considérablement selon le
niveau d’études. Les études du premier cycle montrent des similarités
culturelles avec les autres niveaux, tandis que les études de L3
montrent une variance culturelle plus élevée.
La variation de la Culture Générale selon le Niveau d’Études suit
une tendance décroissante. Ainsi, les étudiants en L3 ont une Culture
Générale légèrement supérieure à celle des étudiants en L2 , qui ont à
leur tour une Culture Générale légèrement supérieure à celle des
étudiants en premier cycle.

Conclusion
La culture générale des étudiants résulte d’une interconnexion
complexe de divers facteurs tels que le genre, le temps consacré aux
études, le stade académique et la filière suivie. Toutefois, il est
essentiel de souligner que chaque étudiant est une entité unique, et des
généralisations excessives risquent de négliger la richesse des
expériences et des perspectives au sein de la communauté étudiante.
L’accent sur l’individualité reste primordial, et une approche nuancée
s’impose pour appréhender pleinement la diversité des cultures
étudiantes.
En résumé, la culture générale des étudiants émerge d’une combinaison
délicate de paramètres, incluant le contenu des programmes d’études, le
niveau académique, le style de vie et les choix personnels. Pour
favoriser un environnement éducatif équilibré et stimulant, il est
suggéré d’adapter les programmes éducatifs, de promouvoir
l’auto-apprentissage et de sensibiliser à l’importance de la diversité
culturelle. Ces initiatives contribueront à former des étudiants mieux
informés et prêts à relever les défis de leur vie professionnelle et
personnelle.
LS0tDQp0aXRsZTogIkxhIGN1bHR1cmUgZ8OpbsOpcmFsIGVzdCBsZSBqYXJkaW4gZGUgbOKAmWVzcHJpdCBvdSBjaGFxdWUgY29ubmFpc3NhbmNlIHBsYW50w6llIGZsZXVyaXQgZW4gc2FnZXNzZSINCmF1dGhvcjogIkJvdWdoYXppIE1lcmllbSBldCBCb3VkYW1vdXMgTHluYSINCmRhdGU6ICcyMDIzLTEyLTE4Jw0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgICBoaWdobGlnaHQ6IGthdGUNCiAgICB0aGVtZTogdW5pdGVkDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSANCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQoNCmBgYHtyIE9wdGlvbnMgcG91ciBsZXMgcHJvY2hhaW5zIGNodW5rcywgZWNobyA9IEZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBtZXNzYWdlID0gRkFMU0UsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFDQogICkNCmBgYA0KDQpgYGB7ciBMaXN0ZSBkZXMgcGFja2FnZX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShnZ3JpZGdlcykNCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShmb3JjYXRzKQ0KbGlicmFyeShtb2RlbHN1bW1hcnkpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShyY2FydG9jb2xvcikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KYGBgDQoNCmBgYHtyIFRow6htZSBjaG9pc2kgcG91ciBnZ3Bsb3QyfQ0KdGhlbWVfc2V0KHRoZW1lX21pbmltYWwoKSkgDQpgYGANCg0KYGBge3IgQmFzZSBkZSBkb25uw6llc30NCmRhdGEgPC0gcmVhZF9kZWxpbSgiZGF0YXNvbmRhZ2Uvc29uZGFnZV8yMDIzMTEwOS5jc3YiLGRlbGltID0gIjsiKQ0KYGBgDQoNCmBgYHtyIFJlbm9tbWUgY29sb25uZXN9DQpuZXdfY29sbmFtZXMgPC0gYygiYWdlIiwgImdlbnJlIiwgInRhaWxsZSIsICJhbm5lZV9ldHVkZSIsICJmaWxsaWVyZSIsICJwYXlzX25haXNzYW5jZSIsICJhbm5lZV9iYWMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lhbGl0ZV90ZXJtIiwgInR5cGVfYmFjIiwgImNob2l4X2xpY2VuY2UiLCAidHJhdmFpbF9zY29sYWlyZSIsICJ0cmFuc3BvcnQiLCAidGVtcHNfdHJhbnNwb3J0IiwgInRhYmFjIiwgImFsY29vbCIsICJzb2lyZWUiLCAicGhvYmllIiwgImpldXhfdmlkZW9zIiwgIm9zX3RlbGVwaG9uZSIsICJhZ2VfdGVsZXBob25lIiwgIm9zIiwgImFnZV9vcmRpbmF0ZXVyIiwgInN1cHBvcnRfbm90ZSIsICJtYXRlcmllbCIsInJlc2VhdV9wcmVmZXJlIiwgInRlbXBzX3Jlc2VhdXgiLCAidGVtcHNfdGVsZXBob25lIiwgInNvdXJjZV9pbmZvIiwgImN1bHQxIiwgImN1bHQyIiwiY3VsdDMiLCAiY3VsdDQiLCAiY3VsdDUiLCAiY3VsdDYiLCAiY3VsdDciLCAiY3VsdDgiLCAiY3VsdDkiLCAiY3VsdDEwIiwgInRyaWNoZSIsICJub3RlIikNCmNvbG5hbWVzKGRhdGEpIDwtIG5ld19jb2xuYW1lcw0KYGBgDQojIEludHJvZHVjdGlvbg0KDQpMb3JzIGRlIGxldXIgcGFyY291cnMgYWNhZMOpbWlxdWUsIGxlcyDDqXR1ZGlhbnRzIGV4cGxvcmVudCBsYSBjdWx0dXJlIGfDqW7DqXJhbGUsIHVuZSB2YXN0ZSDDqXRlbmR1ZSBkZSBjb25uYWlzc2FuY2VzIHRyYW5zY2VuZGFudCBsZXMgZGlzY2lwbGluZXMuIENldHRlIHRvaWxlIGRlIGZvbmQgaW50ZWxsZWN0dWVsbGUgZW5yaWNoaXQgbGV1cnMgcGVyc3BlY3RpdmVzLCBub3Vycml0IGxldXIgY3VyaW9zaXTDqSBldCBjb250cmlidWUgw6AgbGV1ciBkw6l2ZWxvcHBlbWVudCBhY2Fkw6ltaXF1ZSwgZm9ybWFudCBhaW5zaSBkZXMgaW5kaXZpZHVzIMOpY2xhaXLDqXMgZXQgZG90w6lzIGQndW5lIHZpc2lvbiDDqWxhcmdpZSBkdSBtb25kZS4NCg0KDQojIyBQcsOpc2VudGF0aW9uIGR1IHN1amV0IA0KDQpQb3VyIG5vdHJlIHByb2pldCBkZSBmaW4gZGUgc2VtZXN0cmUgbm91cyBhbGxvbnMgdGVudGVyIGTigJlhbmFseXNlciBjZXJ0YWluZSBjYXJhY3TDqXJpc3RpcXVlIGRlcyDDqXR1ZGlhbnRzIGRlIGzigJl1bml2ZXJzaXTDqSBkZSBUb3VycyBjb25jZXJuYW50IGxldXIgY3VsdHVyZSBnw6luw6lyYWxlIGRhbnMgY2UgY2FkcmUgZW4gZmFpdCByw6lmw6lyZW5jZSDDoCB1bmUgw6l0dWRlIHF1aSBhIMOpdMOpIG1lbsOpZSDDoCBs4oCZYXV0b21uZSAyMDIzLkNldHRlIMOpdHVkZSwgYmFzw6llIHN1ciB1biBzb25kYWdlIHLDqWFsaXPDqSBwYXIgKipNbWUgU2Nob2xsZXIgZXQgbm91cyoqLCBsZXMgw6l0dWRpYW50cyBkZSBMMyBkJ8OJY29ub21pZSDDoCBs4oCZW3VuaXZlcnNpdMOpIGRlIFRvdXJzXShodHRwczovL3d3dy51bml2LXRvdXJzLmZyLyksIGRhbnMgbGUgY2FkcmUgZGUgbm9zIGNvdXJzIGRlIGxvZ2ljaWVsICoqUjMqKi4gTm90cmUgw6l0dWRlIHNlIHBvcnRlIHN1ciBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZGVzIMOpdHVkaWFudHMsIHBhciBjb25zw6lxdWVudCBub3VzIGFsbG9ucyB0ZW50ZXIgZGUgcsOpcG9uZHJlIGF1eCBxdWVzdGlvbiBzdWl2YW50ZSA6DQoNCiogKlF1ZWxsZSBlc3QgbGEgcGVyY2VwdGlvbiAobml2ZWF1IGRlIGNvbmZpYW5jZSkgZGVzIHLDqXBvbmRhbnRzIHN1ciBsZXVyIGN1bHR1cmUgZ8OpbsOpcmFsZSBwYXIgZ2VucmU/Kg0KDQoqICpBIHF1ZWwgcXVlc3Rpb24gbGVzIHLDqXBvbmRhbnRzIG9udCBsZSBtaWV1eCByw6lwb25kdSA/bGUgbW9pbnMgYmllbiByw6lwb25kdT8qDQoNCiogKlkgYS10LWlsIHVuZSBjb3Jyw6lsYXRpb24gZW50cmUgbGUgdGVtcHMgZGUgdHJhdmFpbCBwZXJzb25uZWwgZXQgbGUgbml2ZWF1IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSA/Kg0KDQoqICpFeGlzdGUtdC1pbCBkZXMgZGlmZsOpcmVuY2VzIHNpZ25pZmljYXRpdmVzIGVuIHRlcm1lcyBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZW50cmUgbGVzIGZpbGnDqHJlcyBkJ8OpdHVkZXMgPyoNCg0KKiAqUXVlbCBlc3QgbGUgbml2ZWF1IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBkZXMgw6l0dWRpYW50cyA/Kg0KDQoqICpDb21tZW50IGxhIGN1bHR1cmUgZ8OpbsOpcmFsZSB2YXJpZS10LWVsbGUgZW4gZm9uY3Rpb24gZHUgbml2ZWF1IGQnw6l0dWRlcyA/Kg0KKiAqRXhpc3RlLXQtaWwgZGVzIGRpZmbDqXJlbmNlcyBlbnRyZSBsZXMgZ2VucmVzIGVuIGNlIHF1aSBjb25jZXJuZSBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgPyoNCg0KDQoNCiMjIFByw6lzZW50YXRpb24gZGVzIGRvbm7DqWVzIA0KDQpOb3VzIGRpc3Bvc29ucyBkZSAqKmByIG5jb2woZGF0YSlgKiogcXVlc3Rpb24gYXZlYyAqKmByIG5yb3coZGF0YSlgKiogZGUgcsOpcG9uZGFudHMsZGVzIMOpdHVkaWFudHMgZGUgTDEsTDIgZXQgTDMgZG9udCBs4oCZw6JnZSBlc3QgY29tcHJpcyBlbnRyZSAqKmByIG1pbihkYXRhJGFnZSlgICoqIGV0ICoqYHIgbWF4KGRhdGEkYWdlKWAqKiBhbnMsIGRhbnMgbGEgYmFzZSBkb25uw6llIHLDqWFsaXPDqWUgcGFyICoqTW1lIFNjaG9sbGVyKiogY29udGVuYW50IGxlcyByw6lwb25zZXMgZGVzIMOpdHVkaWFudHMgZGUgKips4oCZdW5pdmVyc2l0w6kgZGUgVG91cnMqKi4NCkxlcyBxdWVzdGlvbnMgYWJvcmRlbnQgZGl2ZXJzIHN1amV0cyBkb250IGxhICBjdWx0dXJlIGfDqW7DqXJhbGUsIG1haXMgbm91cyBhdm9ucyBkw6ljaWTDqSBkZSBub3VzIGZvY2FsaXNlciBzcMOpY2lmaXF1ZW1lbnQgc3VyIGNlbGxlcy1jaS4gVm9pY2kgdW4gZXhlbXBsZSBkZSBxdWVzdGlvbnMgcXVpIG5vdXMgb250IMOpdMOpIHBvc8OpZXMgOg0KDQorICpRdWVsbGUgZXN0IGxhIHBsdXMgbGFyZ2UgY2hhw65uZSBkZSBtb250YWduZSBkdSBtb25kZSA/Kg0KDQorICpRdWVsIGVzdCBsZSBub20gZGUgbGEgZmVtbWUgbm9pcmUgcXVpIGEgcmVmdXPDqSBkZSBjw6lkZXIgc2EgcGxhY2Ugw6AgdW4gaG9tbWUgYmxhbmMgZGFucyB1biBidXMgZW4gMTk1NSBhdXggw4l0YXRzLVVuaXMgPyoNCg0KKyAqQXUgY291cnMgZGUgcXVlbCBzacOoY2xlLCBDbMOpb3DDonRyZSwgYS10LWVsbGUgcsOpZ27DqSA/Kg0KDQorICpRdWVsIG5hdHVyYWxpc3RlIGEgcsOpdm9sdXRpb25uw6kgbGEgYmlvbG9naWUgYXZlYyBzb24gb3V2cmFnZSDigJxMJ09yaWdpbmUgZGVzIGVzcMOoY2Vz4oCdIHBhcnUgZW4gMTg1OSA/Kg0KKyAqw4AgcXVlbCBtb3QgY29ycmVzcG9uZCBsYSBkw6lmaW5pdGlvbiBzdWl2YW50ZSA6IHLDqXBhcnRpdGlvbiBkYW5zIGxlIHRlbXBzIGTigJl1bmUgY2hhcmdlIGZpbmFuY2nDqHJlIGNvcnJlc3BvbmRhbnQgYXUgcmVtcGxhY2VtZW50IGTigJl1biBiaWVuLA0KbWFjaGluZSwgYXBwYXJlaWwsIGV0Yy4/Kg0KDQorICpRdWkgZXN0IE5pa2kgZGUgU2FpbnQgUGhhbGxlID8qIA0KDQorICpDb21iaWVuIGRlIHRlbXBzIGR1cmUgbGEgcm90YXRpb24gY29tcGzDqHRlIGRlIGxhIEx1bmUgYXV0b3VyIGRlIGxhIFRlcnJlID8qDQoNCisgKkVuIHF1ZWxsZSBhbm7DqWUgZXN0IGTDqWZpbml0aXZlbWVudCBwcm9jbGFtw6llIGzigJlhYm9saXRpb24gZGUgbOKAmWVzY2xhdmFnZSBlbiBGcmFuY2UgPyoNCg0KKyAqUXVpIGEgaW52ZW50w6kgbCdleHByZXNzaW9uICJsYSBtYWluIGludmlzaWJsZSIgPyoNCg0KKyAqUXVlbCDDqWNyaXZhaW4gZXQgcGhpbG9zb3BoZSBmcmFuw6dhaXMgYSByYWNvbnTDqSBs4oCZaGlzdG9pcmUgZGUgQ2FuZGlkZSA/Kg0KDQorICpBdmV6LWJpZW4gam91w6kgbGUgamV1IGV0IHLDqXBvbmR1IHNhbnMgY29uc3VsdMOpIGRlIHNvdXJjZSBkJ2luZm9ybWF0aW9uID8qDQorICpWb3VzIHBlbnNleiBhdm9pciBjb21iaWVuIGRlIHLDqXBvbnNlcyBqdXN0ZSBzdXIgbGVzIDEwIHF1ZXN0aW9ucyA/ICgwIC0gMTApKg0KDQoNCiMgUGVyY2VwdGlvbiBkZSBsYSBDdWx0dXJlIEfDqW7DqXJhbGUgcGFyIEdlbnJlIA0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZHBseXIpDQoNCg0KcCA8LSBnZ3Bsb3QoZGF0YSwgYWVzKHggPSBnZW5yZSwgeSA9IG5vdGUsIGZpbGwgPSBnZW5yZSkpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJzdW1tYXJ5IiwgZnVuID0gIm1lYW4iLCBwb3NpdGlvbiA9ICJkb2RnZSIsIGNvbG9yID0gTkEpICsNCiAgZ2VvbV9jcm9zc2JhcihzdGF0ID0gInN1bW1hcnkiLCBmdW4gPSAibWVkaWFuIiwgcG9zaXRpb24gPSAiZG9kZ2UiLCB3aWR0aCA9IDAuNSwgZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gIiNDNzAwMzkiKSArDQogIHN0YXRfc3VtbWFyeShmdW4uZGF0YSA9ICJtZWFuX2NsX25vcm1hbCIsIGdlb20gPSAidGV4dCIsIGFlcyhsYWJlbCA9IHJvdW5kKC4ueS4uLCAyKSksIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjgpLCB2anVzdCA9IDEyLCBjb2xvciA9ICJibGFjayIpICsNCiAgbGFicygNCiAgICB4ID0gIkdlbnJlIiwgeSA9ICJNb3llbm5lIGRlIGxhIE5vdGUiDQogICkgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJNYXNjdWxpbiIgPSAiIzMxODJiZCIsICJGw6ltaW5pbiIgPSAicGluayIpLCBuYW1lID0gIkdlbnJlIikgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiTWFzY3VsaW4iID0gIiMzMTgyYmQiLCAiRsOpbWluaW4iID0gInBpbmsiKSwgbmFtZSA9ICJHZW5yZSIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgdGhlbWUoDQogICAgbGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IiwNCiAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJwYWxlZ29sZGVucm9kIiwgY29sb3IgPSBOQSksDQogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KSwNCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X2JsYW5rKCksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gMTUsIGhqdXN0ID0gMC41KSAgDQogICkNCmdncGxvdGx5KHApDQpgYGANCg0KKipDb21tZW50YWlyZSoqDQoNCipMZSBkaWFncmFtbWUgaWxsdXN0cmUgbGEgbW95ZW5uZSBldCBsYSBtw6lkaWFuZSBkZXMgw6l2YWx1YXRpb25zIGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBlbiBmb25jdGlvbiBkdSBnZW5yZSAoZsOpbWluaW4gZXQgbWFzY3VsaW4pLiBVbmUgb2JzZXJ2YXRpb24gbm90YWJsZSBlc3QgcXVlIGxlcyBob21tZXMgYWZmaWNoZW50IGfDqW7DqXJhbGVtZW50IHBsdXMgZGUgY29uZmlhbmNlIHF1ZSBsZXMgZmVtbWVzLiBFbiBtb3llbm5lLCBsZXMgaG9tbWVzIGVzdGltZW50IG9idGVuaXIgdW5lIG5vdGUgZGUgNiwyNi8xMCwgdGFuZGlzIHF1ZSBsZXMgZmVtbWVzIGVzdGltZW50IGF0dGVpbmRyZSB1bmUgbW95ZW5uZSBkZSA1LDQ3LioNCg0KKkxlIHNlZ21lbnQgcm91Z2UgcmVwcsOpc2VudGUgbGEgbcOpZGlhbmUsIHF1aSBzZSBzaXR1ZSDDoCA2IHBvdXIgbGVzIGRldXggZ3JvdXBlcyAoZsOpbWluaW4gZXQgbWFzY3VsaW4pLiBBaW5zaSwgYmllbiBxdWUgbGVzIGRldXggc2V4ZXMgYWllbnQgdW5lIG3DqWRpYW5lIMOpZ2FsZSwgb24gcGV1dCBjb25zdGF0ZXIgcXVlIGxlcyBmZW1tZXMgc2VtYmxlbnQgYXZvaXIgdW5lIG1veWVubmUgbMOpZ8OocmVtZW50IGluZsOpcmlldXJlIMOgIGNlbGxlIGRlcyBob21tZXMuKg0KDQoqKmNvbmNsdXNpb24qKg0KbGVzIGhvbW1lcyBzZW1ibGVudCBhdm9pciB1bmUgcGVyY2VwdGlvbiBkZSBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgcGx1cyDDqWxldsOpZSBxdWUgbGVzIGZlbW1lcy4qDQoNCg0KIyBBbmFseXNlIGRlcyBSw6lwb25zZXMgRXhjZXB0aW9ubmVsbGVzIGV0IE1vaW5zIFBlcmZvcm1hbnRlcyBkZXMgUGFydGljaXBhbnRzDQoNCg0KYGBge3J9DQpib25uZXNfcmVwb25zZXMgPC0gYygNCiAgImxhIGNvcmRpbGzDqHJlIGRlcyBBbmRlcyIsDQogICJSb3NhIFBhcmtzIiwNCiAgIjFlciBzacOoY2xlIGF2YW50IEpDIiwNCiAgIkNoYXJsZXMgRGFyd2luIiwNCiAgImFtb3J0aXNzZW1lbnQiLA0KICAidW5lIHBlaW50cmUiLA0KICAiMjggam91cnMiLA0KICAiMTg0OCIsDQogICJBZGFtIFNtaXRoIiwNCiAgIlZvbHRhaXJlIg0KKQ0KDQpjYWxjdWxlX25vdGUgPC0gZnVuY3Rpb24ocm93LCBib25uZXNfcmVwb25zZXMpIHsNCiAgbm90ZSA8LSBzdW0ocm93WyJjdWx0MSJdID09IGJvbm5lc19yZXBvbnNlc1sxXSwNCiAgICAgICAgICAgICAgIHJvd1siY3VsdDIiXSA9PSBib25uZXNfcmVwb25zZXNbMl0sDQogICAgICAgICAgICAgICByb3dbImN1bHQzIl0gPT0gYm9ubmVzX3JlcG9uc2VzWzNdLA0KICAgICAgICAgICAgICAgcm93WyJjdWx0NCJdID09IGJvbm5lc19yZXBvbnNlc1s0XSwNCiAgICAgICAgICAgICAgIHJvd1siY3VsdDUiXSA9PSBib25uZXNfcmVwb25zZXNbNV0sDQogICAgICAgICAgICAgICByb3dbImN1bHQ2Il0gPT0gYm9ubmVzX3JlcG9uc2VzWzZdLA0KICAgICAgICAgICAgICAgcm93WyJjdWx0NyJdID09IGJvbm5lc19yZXBvbnNlc1s3XSwNCiAgICAgICAgICAgICAgIHJvd1siY3VsdDgiXSA9PSBib25uZXNfcmVwb25zZXNbOF0sDQogICAgICAgICAgICAgICByb3dbImN1bHQ5Il0gPT0gYm9ubmVzX3JlcG9uc2VzWzldLA0KICAgICAgICAgICAgICAgcm93WyJjdWx0MTAiXSA9PSBib25uZXNfcmVwb25zZXNbMTBdKQ0KICByZXR1cm4obm90ZSkNCn0NCg0KZGF0YSR2cmFpX25vdGUgPC0gYXBwbHkoZGF0YSwgMSwgY2FsY3VsZV9ub3RlLCBib25uZXNfcmVwb25zZXMgPSBib25uZXNfcmVwb25zZXMpDQpgYGANCg0KYGBge3J9DQpxdWVzdGlvbnNfdGV4dHVlbGxlcyA8LSBjKA0KICAiUXVlbGxlIGVzdCBsYSBwbHVzIGxhcmdlIGNoYcOubmUgZGUgbW9udGFnbmUgZHUgbW9uZGUgPyIsDQogICJRdWVsIGVzdCBsZSBub20gZGUgbGEgZmVtbWUgbm9pcmUgcXVpIGEgcmVmdXPDqSBkZSBjw6lkZXIgc2EgcGxhY2Ugw6AgdW4gaG9tbWUgYmxhbmMgZGFucyB1biBidXMgZW4gMTk1NSBhdXggw4l0YXRzLVVuaXMgPyIsDQogICJBdSBjb3VycyBkZSBxdWVsIHNpw6hjbGUsIENsw6lvcMOidHJlLCBhLXQtZWxsZSByw6lnbsOpID8iLA0KICAiUXVlbCBuYXR1cmFsaXN0ZSBhIHLDqXZvbHV0aW9ubsOpIGxhIGJpb2xvZ2llIGF2ZWMgc29uIG91dnJhZ2Ug4oCcTCdPcmlnaW5lIGRlcyBlc3DDqGNlc+KAnSBwYXJ1IGVuIDE4NTkgPyIsDQogICLDgCBxdWVsIG1vdCBjb3JyZXNwb25kIGxhIGTDqWZpbml0aW9uIHN1aXZhbnRlIDogcsOpcGFydGl0aW9uIGRhbnMgbGUgdGVtcHMgZOKAmXVuZSBjaGFyZ2UgZmluYW5jacOocmUgY29ycmVzcG9uZGFudCBhdSByZW1wbGFjZW1lbnQgZOKAmXVuIGJpZW4sIG1hY2hpbmUsIGFwcGFyZWlsLCBldGMuID8iLA0KICAiUXVpIGVzdCBOaWtpIGRlIFNhaW50IFBoYWxsZSA/IiwNCiAgIkNvbWJpZW4gZGUgdGVtcHMgZHVyZSBsYSByb3RhdGlvbiBjb21wbMOodGUgZGUgbGEgTHVuZSBhdXRvdXIgZGUgbGEgVGVycmUgPyIsDQogICJFbiBxdWVsbGUgYW5uw6llIGVzdCBkw6lmaW5pdGl2ZW1lbnQgcHJvY2xhbcOpZSBs4oCZYWJvbGl0aW9uIGRlIGzigJllc2NsYXZhZ2UgZW4gRnJhbmNlID8iLA0KICAiUXVpIGEgaW52ZW50w6kgbCdleHByZXNzaW9uICdsYSBtYWluIGludmlzaWJsZScgPyIsDQogICJRdWVsIMOpY3JpdmFpbiBldCBwaGlsb3NvcGhlIGZyYW7Dp2FpcyBhIHJhY29udMOpIGzigJloaXN0b2lyZSBkZSBDYW5kaWRlID8iDQopDQoNCmJvbm5lc19yZXBvbnNlcyA8LSBjKCJsYSBjb3JkaWxsw6hyZSBkZXMgQW5kZXMiLCAiUm9zYSBQYXJrcyIsICIxZXIgc2nDqGNsZSBhdmFudCBKQyIsICJDaGFybGVzIERhcndpbiIsICJhbW9ydGlzc2VtZW50IiwgInVuZSBwZWludHJlIiwgIjI4IGpvdXJzIiwgIjE4NDgiLCAiQWRhbSBTbWl0aCIsICJWb2x0YWlyZSIpDQoNCnJlc3VsdGF0cyA8LSBzYXBwbHkoc2VxX2Fsb25nKGJvbm5lc19yZXBvbnNlcyksIGZ1bmN0aW9uKGkpIHsNCiAgbWVhbihkYXRhW1twYXN0ZTAoImN1bHQiLCBpKV1dID09IGJvbm5lc19yZXBvbnNlc1tpXSwgbmEucm0gPSBUUlVFKSAqIDEwMA0KfSkNCg0KDQp0YXV4X2Jvbm5lc19yZXBvbnNlcyA8LSBkYXRhLmZyYW1lKA0KICBRdWVzdGlvbnMgPSBxdWVzdGlvbnNfdGV4dHVlbGxlcywNCiAgUG91cmNlbnRhZ2UgPSByZXN1bHRhdHMNCikNCg0KDQp0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSA8LSBzcHJpbnRmKCIlLjJmJSUiLCB0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkNCg0KDQptZWlsbGV1cl90YXV4IDwtIG1heCh0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkNCm1vaW5zX2Jvbl90YXV4IDwtIG1pbih0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkNCg0KDQprYWJsZSh0YXV4X2Jvbm5lc19yZXBvbnNlcywgImh0bWwiLCBhbGlnbiA9ICdjJywgY29sLm5hbWVzID0gYygiUXVlc3Rpb25zIiwgIlBvdXJjZW50YWdlIGRlIGJvbm5lcyByw6lwb25zZXMiKSkgJT4lDQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIikpICU+JQ0KICByb3dfc3BlYyh3aGljaCh0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSA9PSBtZWlsbGV1cl90YXV4KSwgYmFja2dyb3VuZCA9ICJsaWdodGdyZWVuIikgJT4lDQogIHJvd19zcGVjKHdoaWNoKHRhdXhfYm9ubmVzX3JlcG9uc2VzJFBvdXJjZW50YWdlID09IG1vaW5zX2Jvbl90YXV4KSwgYmFja2dyb3VuZCA9ICIjQzcwMDM5IikgJT4lDQogIGFkZF9oZWFkZXJfYWJvdmUoYygiVGF1eCBkZSBCb25uZXMgUsOpcG9uc2VzIHBhciBRdWVzdGlvbiIgPSAyKSkNCg0KDQoNCnRhdXhfYm9ubmVzX3JlcG9uc2VzJFBvdXJjZW50YWdlX251bSA8LSBhcy5udW1lcmljKHN1YigiJSIsICIiLCB0YXV4X2Jvbm5lc19yZXBvbnNlcyRQb3VyY2VudGFnZSkpDQoNCg0KdGF1eF9ib25uZXNfcmVwb25zZXMkUG91cmNlbnRhZ2VfbnVtIDwtIGFzLm51bWVyaWMoc3ViKCIlIiwgIiIsIHRhdXhfYm9ubmVzX3JlcG9uc2VzJFBvdXJjZW50YWdlKSkNCg0KDQoNCm5vbWJyZV9xdWVzdGlvbnMgPC0gbnJvdyh0YXV4X2Jvbm5lc19yZXBvbnNlcykNCnRhdXhfYm9ubmVzX3JlcG9uc2VzJFF1ZXN0aW9ucyA8LSBwYXN0ZSgiUSIsIHNlcV9sZW4obm9tYnJlX3F1ZXN0aW9ucyksIHNlcCA9ICIiKQ0KICANCmBgYA0KDQoqKkNvbW1lbnRhaXJlKioNCg0KKkwnYW5hbHlzZSBkZXMgcGVyZm9ybWFuY2VzIGRlcyBwYXJ0aWNpcGFudHMgcsOpdsOobGUgcXVlIDkzLjI3ICUgZCdlbnRyZSBldXggb250IHLDqXBvbmR1IGNvcnJlY3RlbWVudCDDoCBsYSBxdWVzdGlvbiAyLiBFbiByZXZhbmNoZSwgc2V1bGVtZW50IDM2LjA2ICUgb250IGNvcnJlY3RlbWVudCByw6lwb25kdSDDoCBsYSBxdWVzdGlvbiAxLCBzdWdnw6lyYW50IHVuZSBkaWZmaWN1bHTDqSBhY2NydWUgcG91ciBjZXR0ZSBkZXJuacOocmUuKg0KDQoqTGEgbWFqb3JpdMOpIGRlcyBwYXJ0aWNpcGFudHMgKDc4Ljg1ICUpIG9udCByw6l1c3NpIMOgIHLDqXBvbmRyZSBjb3JyZWN0ZW1lbnQgw6AgbGEgcXVlc3Rpb24gNS4gTm90b25zIGNlcGVuZGFudCBxdWUgc2V1bHMgMzIuNDYgJSBvbnQgY29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIGxhIHF1ZXN0aW9uIDQsIHNvdWxpZ25hbnQgc2EgY29tcGxleGl0w6kgcG91ciBldXguKg0KDQoqSWwgZXN0IMOpZ2FsZW1lbnQgcmVtYXJxdWFibGUgcXVlIDY3LjMxICUgZGVzIHBhcnRpY2lwYW50cyBvbnQgY29ycmVjdGVtZW50IHLDqXBvbmR1IMOgIGxhIHF1ZXN0aW9uIDMuIEJpZW4gcXVlIGNldHRlIHF1ZXN0aW9uIHNvaXQgcmVsYXRpdmVtZW50IGRpZmZpY2lsZSwgbGEgcGx1cGFydCBkZXMgcGFydGljaXBhbnRzIG9udCBwdSB5IHLDqXBvbmRyZSBjb3JyZWN0ZW1lbnQuKg0KDQoqQ29uY2VybmFudCBsZXMgcG9pbnRzIGZhaWJsZXMgZGVzIHBhcnRpY2lwYW50cywgbGEgcGx1cGFydCBvbnQgw6ljaG91w6kgw6AgcsOpcG9uZHJlIGNvcnJlY3RlbWVudCDDoCBsYSBxdWVzdGlvbiAxLCBwb3J0YW50IHN1ciBsYSBjaGHDrm5lIGRlIG1vbnRhZ25lIGxhIHBsdXMgbG9uZ3VlIGR1IG1vbmRlLiBNYWxncsOpIGRlcyByw6lwb25zZXMgaW50w6lyZXNzYW50ZXMsIHNldWxlbWVudCAzMi40NiAlIG9udCByw6lwb25kdSBjb3JyZWN0ZW1lbnQuKg0KDQoqRGUgcGx1cywgc2V1bHMgNDUuNjcgJSBkZXMgcGFydGljaXBhbnRzIG9udCByw6lwb25kdSBjb3JyZWN0ZW1lbnQgw6AgbGEgcXVlc3Rpb24gNCwgY2VudHLDqWUgc3VyIGxhIHLDqXBhcnRpdGlvbiBmaW5hbmNpw6hyZSBkYW5zIGxlIHRlbXBzLCBpbmRpcXVhbnQgc2EgZGlmZmljdWx0w6kgcG91ciBsZXMgcGFydGljaXBhbnRzLioNCg0KDQojIyBBbmFseXNlIGRlcyBQZXJmb3JtYW5jZXMgcGFyIFF1ZXN0aW9uIDogDQoNCmBgYHtyfQ0KIyBDcmVhdGUgdGhlIHBsb3QgYW5kIGFzc2lnbiBpdCB0byBwDQpwIDwtIGdncGxvdCh0YXV4X2Jvbm5lc19yZXBvbnNlcywgYWVzKHggPSBmY3RfcmVvcmRlcihRdWVzdGlvbnMsIFBvdXJjZW50YWdlX251bSksIHkgPSBQb3VyY2VudGFnZV9udW0sIGZpbGwgPSBRdWVzdGlvbnMsdGV4dCA9IHBhc3RlKCIgUXVlc3Rpb25zOiIsIFF1ZXN0aW9ucywgIjxicj4gUG91cmNlbnRhZ2VfbnVtIDoiLCAgICAgIFBvdXJjZW50YWdlX251bSkpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgY29vcmRfZmxpcCgpICsgDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiR3JlZW5zIiwgZ3VpZGUgPSAibm9uZSIpICsgIyBVc2UgYSBkaXNjcmV0ZSBjb2xvciBwYWxldHRlDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpICsNCiAgbGFicygNCiAgICB4ID0gIlF1ZXN0aW9ucyIsDQogICAgeSA9ICJQb3VyY2VudGFnZSBkZSBib25uZXMgcsOpcG9uc2VzIg0KICApDQoNCiMgQ29udmVydCB0aGUgcGxvdCB0byBhIFBsb3RseSBpbnRlcmFjdGl2ZSBwbG90DQpnZ3Bsb3RseShwLHRvb2x0aXAgPSAidGV4dCIgKQ0KDQoNCmBgYA0KDQoqKkNvbW1lbnRhaXJlKioNCg0KKkxlcyBxdWVzdGlvbnMgZGV1eCAoOTMuMjclKSwgcXVhdHJlICg4Ny4wMiUpLCBldCBodWl0ICg3OC44NSUpIGFmZmljaGVudCBsZXMgcG91cmNlbnRhZ2VzIGRlIGJvbm5lcyByw6lwb25zZXMgbGVzIHBsdXMgw6lsZXbDqXMgcGFyIHJhcHBvcnQgYXV4IGF1dHJlcyBxdWVzdGlvbnMuKg0KDQoNCiMgQW5hbHlzZSBsZVRlbXBzIGRlIFRyYXZhaWwgUGVyc29ubmVsIGV0IGxlIE5pdmVhdSBkZSBDdWx0dXJlIEfDqW7DqXJhbGUgDQoNCg0KYGBge3J9DQpkYXRhX2NsZWFuIDwtIGRhdGEgJT4lDQogIGZpbHRlcih0cmF2YWlsX3Njb2xhaXJlID4gMCAmIHRyYXZhaWxfc2NvbGFpcmUgPD0gNjApDQoNCmcgPC0gZ2dwbG90KGRhdGFfY2xlYW4sIGFlcyh4ID0gdHJhdmFpbF9zY29sYWlyZSwgeSA9IHZyYWlfbm90ZSwgY29sb3IgPSB2cmFpX25vdGUpKSArDQogIGdlb21fcG9pbnQoKSArDQogIGxhYnMoDQogICAgeCA9ICJUZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCAoaGV1cmVzL3NlbWFpbmUpIiwNCiAgICB5ID0gIk5pdmVhdSBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgKG5vdGUgc3VyIDEwKSIsDQogICAgY29sb3IgPSAiTml2ZWF1IGRlIGN1bHR1cmVcbmfDqW7DqXJhbGUgKHN1ciAxMCkiICANCiAgKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHNjYWxlX2NvbG9yX2dyYWRpZW50KGxvdyA9ICIjQzcwMDM5IiwgaGlnaCA9ICJsaWdodGdyZWVuIikgKw0KICB0aGVtZSgNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgIA0KICAgIGxlZ2VuZC50aXRsZS5hbGlnbiA9IDAuNSwgICANCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpIA0KICApICsNCiAgYW5ub3RhdGUoInRleHQiLCB4ID0gSW5mLCB5ID0gSW5mLCBsYWJlbCA9ICJDaGFxdWUgcG9pbnQgcmVwcsOpc2VudGUgdW4gw6l0dWRpYW50LlxuTGEgY291bGV1ciBpbmRpcXVlIHNvbiBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlLiIsIGhqdXN0ID0gMS4xLCB2anVzdCA9IDEuMSwgc2l6ZSA9IDMpDQpnZ3Bsb3RseShnKQ0KYGBgDQoNCioqY29tbWVudGFpdHJlKioNCg0KKklsIHNlbWJsZSBxdWUgbGVzIGRvbm7DqWVzIG5lIG1vbnRyZW50IHBhcyBkZSBjb3Jyw6lsYXRpb24gc2lnbmlmaWNhdGl2ZSBlbnRyZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBldCBsZSBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIGNoZXogbGVzIMOpdHVkaWFudHMuIExlcyBwb2ludHMgc2VtYmxlbnQgw6p0cmUgZGlzcGVyc8OpcyBkYW5zIGwnZXNwYWNlLCBjZSBxdWkgaW5kaXF1ZSBxdSdpbCBuJ3kgYSBwYXMgZGUgdGVuZGFuY2Ugb3UgZGUgcmVsYXRpb24gY2xhaXJlIGVudHJlIGxlcyBkZXV4IHZhcmlhYmxlcy5JbCBlc3Qgw6lnYWxlbWVudCBpbnTDqXJlc3NhbnQgZGUgcmVtYXJxdWVyIHF1ZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBuJ2VzdCBwYXMgZGlyZWN0ZW1lbnQgbGnDqSBhdSBuaXZlYXUgZGUgbGEgY3VsdHVyZSBnw6luw6lyYWxlLiBCaWVuIHF1ZSBsYSByZWxhdGlvbiBlbnRyZSBsZXMgZGV1eCB2YXJpYWJsZXMgc29pdCBtb2lucyDDqXZpZGVudGUsIGNlbGEgcG91cnJhaXQgw6p0cmUgZMO7IGF1IGZhaXQgcXVlIGxlcyBib25uZXMgcsOpcG9uc2VzIG5lIHJlZmzDqHRlbnQgcGFzIG7DqWNlc3NhaXJlbWVudCBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBkZXMgcGFydGljaXBhbnRzLioNCg0KIyMgVGVzdCBQZWFyc29uIA0KDQpgYGB7cn0NCmNvcl90ZXN0IDwtIGNvci50ZXN0KGRhdGFfY2xlYW4kdHJhdmFpbF9zY29sYWlyZSwgZGF0YV9jbGVhbiR2cmFpX25vdGUsIG1ldGhvZCA9ICJwZWFyc29uIikNCmNvcl90ZXN0IA0KYGBgDQoNCioqQ29tbWVudGFpcmU6KioNCg0KKkxlIGNvZWZmaWNpZW50IGRlIGNvcnLDqWxhdGlvbiBvYnNlcnbDqSBlbnRyZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBldCBsZSBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIGVzdCBkZSAwLjAyODQyODQ0LCBpbmRpcXVhbnQgdW5lIGNvcnLDqWxhdGlvbiB0csOocyBmYWlibGUsIHZvaXJlIGluZXhpc3RhbnRlIHN1ciBsZSBwbGFuIGxpbsOpYWlyZS4gTGEgcC12YWx1ZSBhc3NvY2nDqWUgw6AgY2V0dGUgY29ycsOpbGF0aW9uIGVzdCBkZSAwLjY5MTcsIGTDqXBhc3NhbnQgbGFyZ2VtZW50IGxlIHNldWlsIGRlIHNpZ25pZmljYXRpdml0w6kgY29udmVudGlvbm5lbCBkZSAwLjA1LiBEZSBwbHVzLCBsJ2ludGVydmFsbGUgZGUgY29uZmlhbmNlIMOgIDk1JSBwb3VyIGxlIGNvZWZmaWNpZW50IGRlIGNvcnLDqWxhdGlvbiB2YXJpZSBkZSAtMC4xMTE4MTE2IMOgIDAuMTY3NTU4Mi4gQ2VzIHLDqXN1bHRhdHMgc3VnZ8OocmVudCBxdSdpbCBuJ3kgYSBwYXMgZGUgcmVsYXRpb24gc2lnbmlmaWNhdGl2ZSBlbnRyZSBsZSB0ZW1wcyBkZSB0cmF2YWlsIHBlcnNvbm5lbCBldCBsZSBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIGRhbnMgbm90cmUgw6ljaGFudGlsbG9uLioNCg0KKipDb25jbHVzaW9uIDoqKg0KDQoqTGVzIHLDqXN1bHRhdHMgZHUgdGVzdCBkZSBjb3Jyw6lsYXRpb24gZGUgUGVhcnNvbiBzdWdnw6hyZW50IHF1J2lsIG4neSBhIHBhcyBkZSByZWxhdGlvbiBzaWduaWZpY2F0aXZlIGVudHJlIGxlIHRlbXBzIGRlIHRyYXZhaWwgcGVyc29ubmVsIGV0IGxlIG5pdmVhdSBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZGFucyBjZXQgw6ljaGFudGlsbG9uIGRlIGRvbm7DqWVzLioNCg0KDQoNCiMgQW5hbHlzZSBkZXMgRGlmZsOpcmVuY2VzIGRlIE5pdmVhdSBkZSBDdWx0dXJlIEfDqW7DqXJhbGUNCg0KDQpgYGB7cn0NCmdncGxvdChkYXRhLCBhZXMoeCA9IGZpbGxpZXJlLCB5ID0gdnJhaV9ub3RlLCBmaWxsID0gZmlsbGllcmUpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiQXV0cmUiID0gImxpZ2h0Ymx1ZSIsICJHZXN0aW9uIiA9ICJsaWdodGdyZWVuIiwgIsOJY29ub21pZSIgPSAiI0M3MDAzOSIpKSArDQogIGxhYnMoDQogICAgeCA9ICJGaWxpw6hyZSIsDQogICAgeSA9ICJOaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlIChub3RlIHN1ciAxMCkiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIGhqdXN0ID0gMC41LCBzaXplID0gMTUpLA0KICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIg0KICApICsNCiAgYW5ub3RhdGUoInRleHQiLCB4ID0gSW5mLCB5ID0gSW5mLCBsYWJlbCA9ICJMZXMgYm/DrnRlcyDDoCBtb3VzdGFjaGVzIG1vbnRyZW50IGxhIGRpc3RyaWJ1dGlvblxuZGVzIG5vdGVzIHBhciBmaWxpw6hyZSwgaW5kaXF1YW50IGxlcyBtw6lkaWFuZXMsXG5sZXMgcXVhcnRpbGVzIGV0IGxlcyB2YWxldXJzIGFiZXJyYW50ZXMuIiwgaGp1c3QgPSAxLjEsIHZqdXN0ID0gMS4xLCBzaXplID0gMykgKw0KdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpDQpgYGANCg0KKipDb21tZW50YWlyZSoqDQoNCipjZSBncmFwaGUgZm91cm5pdCB1biBhcGVyw6d1IGRlcyBuaXZlYXV4IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBkYW5zIGxlcyBkaWZmw6lyZW50ZXMgZmlsacOocmVzIGQnw6l0dWRlcyBldCBtZXQgZW4gw6l2aWRlbmNlIGxlcyBzcMOpY2lmaWNpdMOpcyBkZSBjaGFxdWUgZmlsacOocmUgZW4gbWF0acOocmUgZGUgY3VsdHVyZSBnw6luw6lyYWxlLkNldHRlIGluZm9ybWF0aW9uIGVzdCBwYXJ0aWN1bGnDqHJlbWVudCB1dGlsZSBwb3VyIGxlcyBkw6ljaWRldXJzLCBjYXIgZWxsZSBwZXJtZXQgZGUgbWlldXggY29tcHJlbmRyZSBsZXMgc3DDqWNpZmljaXTDqXMgZGUgY2hhcXVlIGZpbGnDqHJlIGV0IGQnYWRhcHRlciBsZXMgcHJvZ3JhbW1lcyBldCBsZXMgcmVzc291cmNlcyDDqWR1Y2F0aXZlcyBlbiBjb25zw6lxdWVuY2UuKg0KDQojIyBUZXN0IGRlIEtydXNrYWwtV2FsbGlzDQoNCmBgYHtyfQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShrbml0cikNCmlmIChzaGFwaXJvLnRlc3QoZGF0YSR2cmFpX25vdGUpJHAudmFsdWUgPiAwLjA1ICYmIGJhcnRsZXR0LnRlc3QodnJhaV9ub3RlIH4gZmlsbGllcmUsIGRhdGEgPSBkYXRhKSRwLnZhbHVlID4gMC4wNSkgew0KICBhbm92YV9yZXN1bHQgPC0gYW92KHZyYWlfbm90ZSB+IGZpbGxpZXJlLCBkYXRhID0gZGF0YSkNCiAgcHJpbnQoc3VtbWFyeShhbm92YV9yZXN1bHQpKSANCn0gZWxzZSB7DQogIGtydXNrYWxfcmVzdWx0IDwtIGtydXNrYWwudGVzdCh2cmFpX25vdGUgfiBmaWxsaWVyZSwgZGF0YSA9IGRhdGEpDQogIHByaW50KGtydXNrYWxfcmVzdWx0KQ0KfSANCg0KYGBgDQoNCioqQ29tbWVudGFpcmUgOioqDQoNCg0KKkxhIHZhbGV1ciBkdSB0ZXN0IGR1IGNoaS1jYXJyw6kgZGUgS3J1c2thbC1XYWxsaXMgZXN0IGRlIDEuMzk1OSwgcmVmbMOpdGFudCBsYSBtZXN1cmUgZGUgbGEgZGlmZsOpcmVuY2UgZ2xvYmFsZSBlbnRyZSBsZXMgZ3JvdXBlcyBkZSBmaWxpw6hyZXMuIExhIHAtdmFsdWUgYXNzb2Npw6llIMOgIGNlIHRlc3QgZXN0IGRlIDAuNDk3NiwgZMOpcGFzc2FudCBsZSBzZXVpbCBzdGFuZGFyZCBkZSBzaWduaWZpY2F0aXZpdMOpIGRlIDAuMDUuIENlcyByw6lzdWx0YXRzIGluZGlxdWVudCBxdSdpbCBuJ3kgYSBwYXMgZGUgcHJldXZlIHN0YXRpc3RpcXVlbWVudCBzaWduaWZpY2F0aXZlIHBvdXIgYWZmaXJtZXIgcXVlIGxlcyB2YXJpYXRpb25zIG9ic2VydsOpZXMgZGFucyBsZXMgbml2ZWF1eCBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZW50cmUgbGVzIGZpbGnDqHJlcyBzb250IGF1dHJlIGNob3NlIHF1ZSBsZSBmcnVpdCBkdSBoYXNhcmQuKg0KDQoqRW4gcsOpc3Vtw6ksIGxlcyBjb25jbHVzaW9ucyBkdSB0ZXN0IGRlIEtydXNrYWwtV2FsbGlzIHN1Z2fDqHJlbnQgcXUnYXVjdW5lIGRpZmbDqXJlbmNlIHNpZ25pZmljYXRpdmUgbidlc3Qgb2JzZXJ2w6llIGVuIHRlcm1lcyBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgZW50cmUgbGVzIMOpdHVkaWFudHMgZGVzIGRpdmVyc2VzIGZpbGnDqHJlcyBkJ8OpdHVkZXMgZGFucyBjZXQgw6ljaGFudGlsbG9uLiBBdXRyZW1lbnQgZGl0LCBzZWxvbiBjZXMgZG9ubsOpZXMsIGxhIGZpbGnDqHJlIGQnw6l0dWRlcyBkJ3VuIMOpdHVkaWFudCBuZSBzZW1ibGUgcGFzIMOqdHJlIHVuIGluZGljYXRldXIgc2lnbmlmaWNhdGlmIGRlIHNvbiBuaXZlYXUgZGUgY3VsdHVyZSBnw6luw6lyYWxlLioNCg0KDQojIMOJdmFsdWF0aW9uIGR1IE5pdmVhdSBkZSBDdWx0dXJlIEfDqW7DqXJhbGUgZGVzIMOJdHVkaWFudHMgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KG1vZGVsc3VtbWFyeSkNCmBgYA0KDQpgYGB7cn0NCmRhdGEkc3VyZXN0aW1hdGlvbjwtZGF0YSR2cmFpX25vdGUtZGF0YSRub3RlIA0KcXVhbnRpX3ZhciA8LSBjKDQwLDQxLDQyKSANCnF1YWxpX3ZhciA8LSBjKDI5OjM4KSANCmBgYA0KDQpgYGB7cn0NCmRhdGFzdW1tYXJ5X3NraW0oZGF0YVssIHF1YW50aV92YXJdKSANCmRhdGFzdW1tYXJ5X3NraW0oZGF0YVsscXVhbGlfdmFyXSwgDQogICAgICAgICAgICAgICAgIHR5cGUgPSAiY2F0ZWdvcmljYWwiKQ0KYGBgDQoNCioqQ29tbWVudGFpcmUqKg0KDQoqTCdhbmFseXNlIGRlcyBkb25uw6llcyByZWN1ZWlsbGllcyBkYW5zIG5vdHJlIGVucXXDqnRlIGZvdXJuaXQgZGVzIHBlcnNwZWN0aXZlcyBzaWduaWZpY2F0aXZlcyBzdXIgbGUgbml2ZWF1IGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSBkZXMgw6l0dWRpYW50cyBpbnRlcnJvZ8Opcy4gTGEgbW95ZW5uZSBkZXMgbm90ZXMgb2J0ZW51ZXMgYXR0ZWludCA2LjAsIHByw6lzZW50YW50IHVuZSB2YXJpYWJpbGl0w6kgbWFycXXDqWUgaWxsdXN0csOpZSBwYXIgdW4gw6ljYXJ0LXR5cGUgZGUgMi4wLiBFbiBjZSBxdWkgY29uY2VybmUgZGVzIHF1ZXN0aW9ucyBzcMOpY2lmaXF1ZXMsIDYxLjElIGRlcyByw6lwb25kYW50cyBvbnQgY29ycmVjdGVtZW50IGlkZW50aWZpw6kgbCdIaW1hbGF5YSBjb21tZSBsYSBwbHVzIHZhc3RlIGNoYcOubmUgZGUgbW9udGFnbmVzLCB0YW5kaXMgcXVlIDY5LjclIG9udCBiaWVuIGFzc2ltaWzDqSBsYSBub3Rpb24gZCdhbW9ydGlzc2VtZW50IGVuIGZpbmFuY2UuIERlcyBwZXJmb3JtYW5jZXMgbm90YWJsZXMgb250IMOpdMOpIGVucmVnaXN0csOpZXMgc3VyIGRlcyBxdWVzdGlvbnMgZW1ibMOpbWF0aXF1ZXMsIHRlbGxlcyBxdWUgbCdpZGVudGlmaWNhdGlvbiBkZSBSb3NhIFBhcmtzICg5My4zJSksIHF1aSBhIHJlZnVzw6kgZGUgY8OpZGVyIHNhIHBsYWNlIMOgIHVuIGhvbW1lIG5vaXIgYXV4IMOJdGF0cy1VbmlzIGVuIDE5NTUsIGxlcyAyOCBqb3VycyByZXByw6lzZW50YW50IGxhIGR1csOpZSBkZSByb3RhdGlvbiBkZSBsYSBMdW5lICg2Ny4zJSksIGV0IGwnYXR0cmlidXRpb24gZGUgImxhIG1haW4gaW52aXNpYmxlIiDDoCBBZGFtIFNtaXRoICg3Mi4xJSkuKg0KDQoqKkNvbmNsdXNpb24qKg0KDQoqTGVzIHF1ZXN0aW9ucyBwb3J0YW50IHN1ciBsYSBmZW1tZSBub2lyZSBxdWkgYSByZWZ1c8OpIGRlIGPDqWRlciBzYSBwbGFjZSDDoCB1biBob21tZSBub2lyIGVuIDE5NTUgYXV4IMOJdGF0cy1VbmlzIChjdWx0MiksIHN1ciBsZSBuYXR1cmFsaXN0ZSBxdWkgYSByw6l2b2x1dGlvbm7DqSBsYSBiaW9sb2dpZSBhdmVjIHNvbiBvdXZyYWdlICJMJ09yaWdpbmUgZGVzIGVzcMOoY2VzIiBwYXJ1IGVuIDE4NTkgKGN1bHQ0KSBldCBzdXIgbGEgZHVyw6llIGRlIHJvdGF0aW9uIGRlIGxhIEx1bmUgKGN1bHQ3KSBvbnQgZ8OpbsOpcsOpIGRlcyB0YXV4IMOpbGV2w6lzIGRlIHLDqXBvbnNlcyBjb3JyZWN0ZXMuIEVuIHJldmFuY2hlLCBsZXMgcXVlc3Rpb25zIHJlbGF0aXZlcyDDoCBsYSBwbHVzIHZhc3RlIGNoYcOubmUgZGUgbW9udGFnbmVzIChsZSBtYXNzaWYgZGUgbCdBdGxhcywgTWFlIEplbWlzb24gZXQgbGVzIFJvY2hldXNlcykgb250IG9idGVudSBkZXMgdGF1eCBkZSByw6lwb25zZXMgcGx1cyBmYWlibGVzLiBMZXMgdmFyaWF0aW9ucyBzaWduaWZpY2F0aXZlcyBkYW5zIGxlcyByw6lwb25zZXMgc291bGlnbmVudCBsYSBkaXZlcnNpdMOpIGRlcyBjb25uYWlzc2FuY2VzIGRlcyDDqXR1ZGlhbnRzIGVuIGN1bHR1cmUgZ8OpbsOpcmFsZSwgb2ZmcmFudCBhaW5zaSB1biBhcGVyw6d1IGTDqXRhaWxsw6kgZGUgbGV1cnMgcGVyZm9ybWFuY2VzIHN1ciBjaGFxdWUgcXVlc3Rpb24gc3DDqWNpZmlxdWUuKg0KDQojIEN1bHR1cmUgZ8OpbsOpcmFsIHNlbG9uIGxlIG5pdmVhdSBkJ8OpdHVkZQ0KDQpgYGB7cn0NCnAgIDwtIGdncGxvdChkYXRhLCBhZXMoeCA9IHZyYWlfbm90ZSwgZmlsbCA9IGFubmVlX2V0dWRlKSkgKw0KICBnZW9tX2RlbnNpdHkoYWxwaGEgPSAwLjUpICsNCiAgbGFicygNCiAgICB4ID0gIk5pdmVhdSBkZSBjdWx0dXJlIGfDqW7DqXJhbGUgKG5vdGUgc3VyIDEwKSIsDQogICAgeSA9ICJEZW5zaXTDqSINCiAgKSArDQogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpwX2ludGVyYWN0aXZlIDwtIGdncGxvdGx5KHApDQpwX2ludGVyYWN0aXZlDQpgYGANCg0KKipDb21tZW50YWlyZSoqDQoNCipMZXMgZGlmZsOpcmVuY2VzIGN1bHR1cmVsbGVzIHZhcmllbnQgY29uc2lkw6lyYWJsZW1lbnQgc2Vsb24gbGUgbml2ZWF1IGQnw6l0dWRlcy4gTGVzIMOpdHVkZXMgZHUgcHJlbWllciBjeWNsZSBtb250cmVudCBkZXMgc2ltaWxhcml0w6lzIGN1bHR1cmVsbGVzIGF2ZWMgbGVzIGF1dHJlcyBuaXZlYXV4LCB0YW5kaXMgcXVlIGxlcyDDqXR1ZGVzIGRlIEwzIG1vbnRyZW50IHVuZSB2YXJpYW5jZSBjdWx0dXJlbGxlIHBsdXMgw6lsZXbDqWUuKg0KDQoqTGEgdmFyaWF0aW9uIGRlIGxhIEN1bHR1cmUgR8OpbsOpcmFsZSBzZWxvbiBsZSBOaXZlYXUgZCfDiXR1ZGVzIHN1aXQgdW5lIHRlbmRhbmNlIGTDqWNyb2lzc2FudGUuIEFpbnNpLCBsZXMgw6l0dWRpYW50cyBlbiBMMyBvbnQgdW5lIEN1bHR1cmUgR8OpbsOpcmFsZSBsw6lnw6hyZW1lbnQgc3Vww6lyaWV1cmUgw6AgY2VsbGUgZGVzIMOpdHVkaWFudHMgZW4gTDIgICwgcXVpIG9udCDDoCBsZXVyIHRvdXIgdW5lIEN1bHR1cmUgR8OpbsOpcmFsZSBsw6lnw6hyZW1lbnQgc3Vww6lyaWV1cmUgw6AgY2VsbGUgZGVzIMOpdHVkaWFudHMgZW4gcHJlbWllciBjeWNsZS4qDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQoNCiMgQ2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlcyBmb3IgZWFjaCBjYXRlZ29yeQ0KZGF0YV90cmljaGUgPC0gZGF0YSAlPiUNCiAgY291bnQodHJpY2hlKSAlPiUNCiAgbXV0YXRlKHBvdXJjZW50YWdlID0gbiAvIHN1bShuKSAqIDEwMCkNCg0KIyBDcmVhdGUgdGhlIHBsb3QNCmdncGxvdChkYXRhX3RyaWNoZSwgYWVzKHggPSAiIiwgeSA9IHBvdXJjZW50YWdlLCBmaWxsID0gdHJpY2hlKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5Iiwgd2lkdGggPSAxKSArDQogIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIm91aSIgPSAibGlnaHRncmVlbiIsICJwcmVzcXVlLi4uIiA9ICIjRkVEOTc2IiwgIm5vbiIgPSAiI0M3MDAzOSIpKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiUG91cmNlbnRhZ2UgZCfDqXR1ZGlhbnRzIGF5YW50IHLDqXBvbmR1IHNhbnMgYWlkZSBhdXggcXVlc3Rpb25zIGRlIGN1bHR1cmUgZ8OpbsOpcmFsZSIsDQogICAgeCA9ICIiLA0KICAgIHkgPSAiIiwNCiAgICBmaWxsID0gIlLDqXBvbnNlIg0KICApICsNCiAgdGhlbWVfdm9pZCgpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChyb3VuZChwb3VyY2VudGFnZSwgMSksICIlIikpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSANCmBgYA0KDQoNCiMgQ29uY2x1c2lvbg0KDQpMYSBjdWx0dXJlIGfDqW7DqXJhbGUgZGVzIMOpdHVkaWFudHMgcsOpc3VsdGUgZCd1bmUgaW50ZXJjb25uZXhpb24gY29tcGxleGUgZGUgZGl2ZXJzIGZhY3RldXJzIHRlbHMgcXVlIGxlIGdlbnJlLCBsZSB0ZW1wcyBjb25zYWNyw6kgYXV4IMOpdHVkZXMsIGxlIHN0YWRlIGFjYWTDqW1pcXVlIGV0IGxhIGZpbGnDqHJlIHN1aXZpZS4gVG91dGVmb2lzLCBpbCBlc3QgZXNzZW50aWVsIGRlIHNvdWxpZ25lciBxdWUgY2hhcXVlIMOpdHVkaWFudCBlc3QgdW5lIGVudGl0w6kgdW5pcXVlLCBldCBkZXMgZ8OpbsOpcmFsaXNhdGlvbnMgZXhjZXNzaXZlcyByaXNxdWVudCBkZSBuw6lnbGlnZXIgbGEgcmljaGVzc2UgZGVzIGV4cMOpcmllbmNlcyBldCBkZXMgcGVyc3BlY3RpdmVzIGF1IHNlaW4gZGUgbGEgY29tbXVuYXV0w6kgw6l0dWRpYW50ZS4gTCdhY2NlbnQgc3VyIGwnaW5kaXZpZHVhbGl0w6kgcmVzdGUgcHJpbW9yZGlhbCwgZXQgdW5lIGFwcHJvY2hlIG51YW5jw6llIHMnaW1wb3NlIHBvdXIgYXBwcsOpaGVuZGVyIHBsZWluZW1lbnQgbGEgZGl2ZXJzaXTDqSBkZXMgY3VsdHVyZXMgw6l0dWRpYW50ZXMuDQoNCkVuIHLDqXN1bcOpLCBsYSBjdWx0dXJlIGfDqW7DqXJhbGUgZGVzIMOpdHVkaWFudHMgw6ltZXJnZSBkJ3VuZSBjb21iaW5haXNvbiBkw6lsaWNhdGUgZGUgcGFyYW3DqHRyZXMsIGluY2x1YW50IGxlIGNvbnRlbnUgZGVzIHByb2dyYW1tZXMgZCfDqXR1ZGVzLCBsZSBuaXZlYXUgYWNhZMOpbWlxdWUsIGxlIHN0eWxlIGRlIHZpZSBldCBsZXMgY2hvaXggcGVyc29ubmVscy4gUG91ciBmYXZvcmlzZXIgdW4gZW52aXJvbm5lbWVudCDDqWR1Y2F0aWYgw6lxdWlsaWJyw6kgZXQgc3RpbXVsYW50LCBpbCBlc3Qgc3VnZ8OpcsOpIGQnYWRhcHRlciBsZXMgcHJvZ3JhbW1lcyDDqWR1Y2F0aWZzLCBkZSBwcm9tb3V2b2lyIGwnYXV0by1hcHByZW50aXNzYWdlIGV0IGRlIHNlbnNpYmlsaXNlciDDoCBsJ2ltcG9ydGFuY2UgZGUgbGEgZGl2ZXJzaXTDqSBjdWx0dXJlbGxlLiBDZXMgaW5pdGlhdGl2ZXMgY29udHJpYnVlcm9udCDDoCBmb3JtZXIgZGVzIMOpdHVkaWFudHMgbWlldXggaW5mb3Jtw6lzIGV0IHByw6p0cyDDoCByZWxldmVyIGxlcyBkw6lmaXMgZGUgbGV1ciB2aWUgcHJvZmVzc2lvbm5lbGxlIGV0IHBlcnNvbm5lbGxlLg==